import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.RandomAccessFile;

public class EscritorArchivo {
	private String nombreArchivoSalida;
	private File archivo;
	private FileWriter archivoSalida;
	private PrintWriter escritor;

	// Abre archivo de salida
	public boolean AbrirArchivoSalida(String nombre)
	{
		this.setNombreArchivoSalida(nombre);
		try {
			this.archivo = new File(this.nombreArchivoSalida);
			this.archivoSalida = new FileWriter(this.archivo);
			this.escritor = new PrintWriter(this.archivoSalida);
			return true;
		} catch (IOException e) {
			System.out.println("No se pudo generar archivo de salida");
			return false;
		} 
	}
	
	public void setNombreArchivoSalida(String nombreArchivoSalida) {
		this.nombreArchivoSalida = nombreArchivoSalida+".coe";
	}

	// Cerrar archivo
	public void CerrarArchivoSalida()
	{
		try {
				archivoSalida.close();
		} catch (IOException e) {
				e.printStackTrace();
		}
	}
	
	public void EscribirLinea( String linea, char finLinea )
	{
		escritor.println(linea+finLinea);
	}
	
	public void EscribirCodigo( String[] codigoMaquina )
	{
		for (int i=0; i < codigoMaquina.length; i++)
				EscribirLinea(codigoMaquina[i],',');		
	}

	public void Corregir()
	{
		this.CerrarArchivoSalida();
		RandomAccessFile corrector;
		
		try {
			corrector = new RandomAccessFile(this.archivo,"rw");
			try {
				corrector.seek(corrector.length()-3);
				corrector.write(';');
			} catch (IOException e) {
				e.printStackTrace();
			}
		} catch (FileNotFoundException e1) {
			e1.printStackTrace();
		}
	}
}
